//go:generate goderive

package goderive

//import "github.com/asynkron/protoactor-go/actor"

type Test1 struct {
	Int64     int64
	StringPtr *string
	Slice     []int
	Map       map[int]int
	i         int
	//PID       *actor.PID
	//PIDSlice  []*actor.PID
	//PIDMap    map[int]*actor.PID
}

func (m *Test1) Clone() *Test1 {
	if m == nil {
		return nil
	}
	n := &Test1{}
	deriveDeepCopyTest1(n, m)
	return n
}

func (m *Test1) GoString() string {
	return deriveGoStringTest1(m)
}

type Test2 struct {
	Int64     int64
	StringPtr *string
	Slice1    []Test1
	Slice2    []*Test1
	p         *Test1
	Map1      map[int]int
	Map2      map[int64]Test1
	Map3      map[int64]*Test1
}

func (m *Test2) Clone() *Test2 {
	if m == nil {
		return nil
	}
	n := &Test2{}
	deriveDeepCopyTest2(n, m)
	return n
}

func (m *Test2) GoString() string {
	return deriveGoStringTest2(m)
}
